#ifndef __STREAM_H__
#define __STREAM_H__

#include "TypeDef.h"

namespace Woo {
namespace IO {

class Stream
{
public:
	Stream();
	virtual ~Stream();

	virtual UInt32 GetLength() = 0;
	virtual UInt32 GetPosition() = 0;
	virtual void SetPosition(UInt32 position) = 0;
	virtual UInt32 Write(const Byte* buffer, UInt32 bufferSize) = 0;
	virtual UInt32 Read(Byte* buffer, UInt32 bufferSize) = 0;
	virtual void Close() = 0;
	virtual bool IsClosed() = 0;
	virtual bool CanRead() = 0;
	virtual bool CanWrite() = 0;
	virtual void Copy(Stream* dest);
};

} // namespace IO
} // namespace Woo

#endif // define __STREAM_H__
